/*package com.smarttest.portal.refresh.util;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.smarttest.portal.refresh.geo.GeoUtils;
import com.chinaway.gps.model.Location;

public class LocationUtils {
	
	*//** 离线时间阀值，超过这个时间没有收到数据则判为离线，单位：秒 *//*
	public static final long OFFLINE_DIFF = 1200;
	
	public static final int TYPE_GT01 = 1;
	public static final int TYPE_GT03 = 3;
	public static final int TYPE_GT06 = 6;
	public static final int TYPE_MOBILE = 20;
	public static final int TYPE_TC68 = 68;
	
	*//**
	 * 当前处于有效移动状态（已排除漂移）
	 *//*
	public static boolean isMoved(Location lct) {
		return lct.getSpeed() > 5 && lct.getDistance() > 1000;
	}
	
	*//**
	 * 当前处于有效移动状态（已排除漂移）
	 *//*
	public static boolean isStop(Location lct) {
		return lct.getSpeed() < 5 && lct.getDistance() < 1000;
	}
	
	
	
	*//**
	 * 手机定位
	 *//*
	public static boolean isMobile(Location lct) {
		return lct.getMactype() == TYPE_MOBILE || isMobile(lct.getImei());
	}
	public static boolean isMobile(String imei) {
		return StringUtils.isNotBlank(imei) && StringUtils.startsWith(imei, "2001");
	}
	
	*//**
	 * 距离大于50公里, 或者距离大于100米, 速度大于5公里/小时, 间隔大于1分钟
	 * @param last
	 * @param lct
	 * @return
	 *//*
	public static boolean breakMoved(Location last, Location lct) {
		if (last == null) {
			return false;
		}
		double d = GeoUtils.distance(last.getLngw(), last.getLatw(), lct.getLngw(), lct.getLatw());
		long inv = (lct.getTime().getTime() - last.getTime().getTime())/1000;
		double speed = (inv == 0) ? 0 : d * 3600 / inv;
		return (d >= 100 && speed >= 5000 && inv >= 60) || d >= 50000;
	}
	

	public static void refreshDistance(List<Location> lcts) {
		if (lcts == null || lcts.size() <= 1)
			return;
		Location last = lcts.get(0);
		for(int i = 1; i < lcts.size(); i++) {
			Location lct = lcts.get(i);
			lct.setDistance(distance(last, lct));
			last = lct;
		}
	}
	

	*//**
	 * 忽略漂移的距离，单位厘米
	 *//*
	public static int distance(Location last, Location lct) {
		int result = 0;
		if (last != null && last.getLatw() > 0) {
			if (last != null && (lct.getLat() != last.getLat() || lct.getLng() != last.getLng())) {				
				// 两点的行驶时间（秒）
				long interval = last.getTime().getTime();
				interval = (lct.getTime().getTime() - interval) / 1000;
				// 非手持设备才处理漂移
				if (!LocationUtils.isMobile(lct)) {
					// 如果2点时间大于30分钟则直接更新一次数据
					if (interval > 1800 && lct.getSpeed() < 10) {
						return 5;
					}
					// 时间大于指定的秒数，默认70
					if (interval <= 0 || interval > lct.getPyBlank() * 7) {
						return 0;
					}
					//过滤速度小于5的数据。
					if(lct.getSpeed() < 5) {
						return 0;
					}
				}
				// 和最后1个非漂移点的时间差
				interval = (lct.getTime().getTime() - last.getTime().getTime());
				// 大于30分钟，记入断点
				// 大于1小时，不计入里程，同时从该点开始计算里程
				if (interval <= (1800000 * 2)) {
					double d = GeoUtils.distance(last.getLng(), last.getLat(), lct.getLng(), lct.getLat());
					double speed = d * 3600000 / interval;
					// 计算速度<160000米/小时或者手持设备
					if (speed < 160000 || LocationUtils.isMobile(lct)) {
						result = (int) Math.abs(d * 100);
					}
				} else {
					result = 3;
				}
			}
		}
		return result;
	}
	

	public static void sortLcts(List<Location> lcts) {
		Collections.sort(lcts, getComparator());
	}
	
	private static Comparator<Location> getComparator() {
		return new Comparator<Location>() {
			@Override
			public int compare(Location o1, Location o2) {
				long t1 = o1.getTime() == null ? 0 : o1.getTime().getTime();
				long t2 = o2.getTime() == null ? 0 : o2.getTime().getTime();
				if (t1 > t2) {
					return 1;
				} else if (t1 < t2) {
					return -1;
				}
				return 0;
			}
		};
	}
	
}
*/